// backend/src/utils/formatBytes.js
function formatBytes(bytes, inputUnit = "b") {
  const units = ["B", "KB", "MB", "GB", "TB", "PB"];
  const unitMap = {
    b: 0,
    kb: 1,
    mb: 2,
    gb: 3,
    tb: 4,
    pb: 5,
  };

  // 转换输入值为字节
  const unitIndex = unitMap[inputUnit.toLowerCase()];
  if (unitIndex === undefined) {
    throw new Error("Invalid input unit");
  }

  let value = bytes * Math.pow(1024, unitIndex);

  // 确定合适的单位
  let i = 0;
  while (value >= 1024 && i < units.length - 1) {
    value /= 1024;
    i++;
  }

  // 保留两位小数
  return `${value.toFixed(2)} ${units[i]}`;
}

export { formatBytes };
